var $dataInfo = $('#callManagerTable');

//超管标识符
let isSuper = false;

//防止表头与表格不对齐
$(window).resize(function () {
    $dataInfo.bootstrapTable('resetView');
});


$(function () {

    dataInfoInit();

    //判断是否是超管，普管则隐藏所属分公司列
    isSuperAdmin();

});


//普通管理员隐藏compName
function isSuperAdmin() {
    $.ajax({
        type: 'GET',
        dataType: "json",
        url: '/returnMoney/isSuperAdmin',
        cache: false,
        async: false,
        success: (function (data) {
            if (!data.data) {
                $dataInfo.bootstrapTable('hideColumn', 'companyName');
            }else{
                isSuper = true;
            }
        }),
        error: (function (res) {
            alert("请求失败");
        })
    });
}


/**
 * 呼叫管理表格初始化
 */
function dataInfoInit() {
    //先销毁表格
    $dataInfo.bootstrapTable('destroy');
    $dataInfo.bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/systemManager/callManager/getCallListsByUser',//请求地址
        method: 'get',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: true,//是否显示行间隔色
        sortable: true,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: false,//是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'callId',
        idField: 'callId',
        pageSize: globalPageSize,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: globalPageList,//可供选择的每页的行数
        fixedColumns: true,     // 冻结列
        fixedNumber: 4,         // 左侧固定列

        queryParams: queryParams,//查询参数
        columns: [
            {title: '主键', field: 'callId', visible: false},
            {title: 'userId', field: 'userId', visible: false},
            {title: '分公司ID', field: 'companyId', visible: false},
            {title: '序号', field: 'index', checkbox:"true"},
            {title: '号码', field: 'telephoneNumber', align: 'left', valign: 'middle'},
            {title: '所属分公司', field: 'companyName', align: 'left', valign: 'middle'},
            {title: '号码类型', field: 'typeStr', align: 'left', valign: 'middle'},
            {title: '状态', field: 'statusStr', align: 'left', valign: 'middle'},
            {title: '所有人', field: 'userName', align: 'left', valign: 'middle'},
            {title: '操作', field: 'operate', align: 'left', formatter: genderOpt}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {
            //加载成功时执行
            $("[data-toggle='tooltip']").tooltip();//加这个是为了让操作列的提示图标显示在上方
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}

/**
 * 自定义操作列内容
 */
function genderOpt(value, row, index) {
    if("禁用" == row.statusStr){
        return [
            '<a type="button" id="bind" class="btn btn-xs btn-default m-r-5 show-btn" title="可用" onclick="available(\''+row.callId+'\');" data-toggle="tooltip">可用</a>'
        ].join('');
    }
    return [
        '<a type="button" id="bind" class="btn btn-xs btn-default m-r-5 show-btn" title="绑定" onclick="bind(\''+row.callId+'\');" data-toggle="tooltip">绑定</a>',
        '<a type="button" id="unbind" class="btn btn-xs btn-default m-r-5 show-btn" title="解绑" onclick="unbind(\''+row.callId+'\')" data-toggle="tooltip">解绑</a>',
        '<a type="button" id="disable" class="btn btn-xs btn-default m-r-5 show-btn" title="禁用" onclick="disable(\''+row.callId+'\')" data-toggle="tooltip">禁用</a>'
    ].join('');
}

//搜索
function searchContentList() {
    $dataInfo.bootstrapTable('refreshOptions', {pageNumber: 1, queryParams: queryParams});
}

//绑定
function bind(callId){
    $('#callId').val(callId);
    if(isSuper){//超管
        //加载全部公司信息
        loadAllCompanyList();
        $('#addUserAccountModal').modal('show');
    }else{//普管
        $('#addUserAccountModal').modal('show');
        //获取普管所在公司ID
        $.ajax({
            type: 'GET',
            dataType: "json",
            url: '/account/selectUserAccountByAccountId?accountId=',
            cache: false,
            async: false,
            success: (function (data) {
                if (data.code == '000000') {
                    $('#companySelect').hide();//隐藏公司列
                    loadPersonByCompanyId(data.data.companyId);
                } else {
                    $.alert("请求失败");
                }
            }),
            error: (function (res) {
                $.alert("请求失败");
            })
        });
    }
}

//解绑
function unbind(callId){
    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/systemManager/callManager/cleanUserAccountId?callId='+callId,
        cache: false,
        async: false,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('解绑成功！');
                searchContentList();//重新加载
            } else {
                $.alert("解绑失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

//禁用
function disable(callId){
    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/systemManager/callManager/disableByCallId?callId='+callId,
        cache: false,
        async: false,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('禁用成功！');
                searchContentList();//重新加载
            } else {
                $.alert("禁用失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}
//可用
function available(callId){
    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/systemManager/callManager/availableByCallId?callId='+callId,
        cache: false,
        async: false,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('修改成功！');
                searchContentList();//重新加载
            } else {
                $.alert("修改失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

// 保存绑定
function saveBindUser(){
    let param = {};
    param.callId = $('#callId').val();
    param.accountId = $('#userSelect option:selected').val();//业务员

    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/systemManager/callManager/saveBindUser',
        cache: false,
        async: true,
        data: param,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('绑定成功！');
                $('#addUserAccountModal').modal('hide');
                searchContentList();//重新加载
            } else {
                $.alert("绑定失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

/**
 * 查询参数
 */
function queryParams(params) {
    //通用
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort; //排序列名
    params.sortOrder = params.order;//排序方式
    //搜索条件
    params.searchContent = $.trim($('#searchContent').val());  //人名 or 号码
    return params;
}


/**
 * 加载全部公司信息
 */
function loadAllCompanyList() {
    $.getJSON("/company/getCompanyList", function (data) {
        if (data.code == '000000') {
            var companyOptionHtml = '';
            data.data.map(function (item) {
                companyOptionHtml += '<option value="' + item.companyId + '">' + item.companyName + '</option>';
            });
            $("#companySelect").html("");
            $('#companySelect').append(companyOptionHtml);
            $('#companySelect').selectpicker('refresh');
            loadPersonByCompanyId(data.data[0].companyId);
        }
    });
    // 当公司下拉改变时级联人员下拉信息
    $("select[id*='companySelect']").on("change", function () {
        loadPersonByCompanyId($(this).val());
    });
}

/**
 * 根据公司ID查询人员信息
 * @param companyId
 */
function loadPersonByCompanyId(companyId) {
    $.getJSON("/account/getAbleAccountListByCompanyId?companyId=" + companyId, function (data) {
        if (data.code == '000000') {
            var userNameOptionHtml = '';
            data.data.map(function (item) {
                userNameOptionHtml += '<option value="' + item.accountId + '">' + item.userName + '</option>';
            });
            $("#userSelect").html("");
            $('#userSelect').append(userNameOptionHtml);
            $('#userSelect').selectpicker('refresh');
        }
    });
}

//显示导入框
function showImportCallModal(){
    $('#importCallModal').modal('show');
}

//取消导入框
function cancelImportCallList() {
    $("#importCallFile").val("");
}

//导入呼叫号码信息
function importCallList() {
    if(!document.getElementById('importCallFile').files[0]){
        $.alert({
            title: '温馨提示',
            content: '请选择文件！',
        });
        return;
    }
    var fileName = document.getElementById('importCallFile').files[0].name;
    var fileType = fileName.substring(fileName.lastIndexOf("."), fileName.length);
    var formData = new FormData();
    //接口接收参数 键值形式 添加到formData中
    formData.append("file",$("#importCallFile")[0].files[0]);
    if(fileName!="" && fileType.toLocaleUpperCase()==".XLSX"){
        $.ajax({
            url: '/callImport/callImport',
            type: 'POST',
            dataType:"json",
            contentType:false,
            data: formData,
            processData: false,
            success:(function(data) {
                if(data.code == "000000"){
                    //线索导入数量
                    var importCallNum = data.data.importCallNum;
                    var repeatIdStr = data.data.repeatIdStr;
                    var importFailIdStr = data.data.importFailIdStr;

                    //返回内容
                    var content = "";

                    //导入数量大于0
                    if(importCallNum>0){
                        content = "成功导入"+importCallNum+"条数据";
                    }
                    //重复id不为空
                    if(repeatIdStr!=""){
                        content = content + "<br>excel表格第：" + repeatIdStr + "行号码已存在";
                    }
                    //失败id不为空
                    if(importFailIdStr!=""){
                        content = content + "<br>excel表格第：" + importFailIdStr + "行信息导入失败";
                    }

                    $.alert({
                        title: '提示',
                        content: content,
                        buttons: {
                            confirm: {
                                text: '确认',
                                btnClass: 'btn-primary',
                                action: function () {
                                    $("#importCallFile").val("");
                                    searchContentList();//重新加载
                                }
                            }
                        }
                    });
                    $('#importCallModal').modal('hide');
                    $("#importCallFile").val("");
                }else{
                    $.alert("导入失败");
                    $("#importCallFile").val("");
                }
            }),
            error:(function() {
                $.alert("导入出错！");
                $("#importCallFile").val("");
            })
        });
    } else {
        $.alert({
            title: '温馨提示',
            content: '请上传.xlsx文件！',
        });
    }
}


/**
 * 下载模板
 */
function downCallTemplate(){
    var url="/callImport/downloadCallTemplate";
    window.location.href=encodeURI(encodeURI(url));
}

/**
 * 批量禁用
 */
function batchDisable(){
    var selectionsArr = $dataInfo.bootstrapTable('getSelections');
    if(selectionsArr.length == 0){
        $.alert("请至少选中一条数据！");
        return;
    }
    var jsonarr = [];
    for(i=0; i<selectionsArr.length; i++){
        jsonarr.push(selectionsArr[i].callId);
    }
    $.ajax({
        url: '/systemManager/callManager/batchDisable',
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(jsonarr),
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('禁用成功！');
                $dataInfo.bootstrapTable('refreshOptions', {pageNumber: 1, queryParams: queryParams});
            } else {
                $.alert("禁用失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    })
}

/**
 * 新增弹窗
 */
function addCall() {
    $('#addCall').modal('show');
    getCompanyList();
}